package com.taxi.driver.data.duty;

import com.taxi.driver.data.entity.OrderListenerEntity;

import rx.Observable;

/**
 * 功能描述："上下班状态仓库"需实现的接口
 */
public interface DutySource {

    /**
     * 获取出车状态
     *
     * @return
     */
    Observable<String> reqDutyStatus(boolean onlyFromRemote);

    /**
     * 出车
     *
     * @return
     */
    Observable<String> reqOnDuty(double onWorkLng, double onWorkLat, String uploadText);

    /**
     * 收车
     *
     * @return
     */
    Observable<String> reqOffDuty(double offWorkLng, double offWorkLat, String uploadText);

    /**
     * 缓存是否出车
     *
     * @param isWork
     */
    void setWorkStatus(Boolean isWork);

    Boolean isWork();

    /**
     * 保存听单设置到本地
     *
     * @param driverUuid
     * @param entity
     */
    void saveListenerSetting(String driverUuid, OrderListenerEntity entity);

    /**
     * 从本地获取听单设置（本地保存的）
     *
     * @param driverUuid
     * @return
     */
    OrderListenerEntity getListenerSetting(String driverUuid);

    /**
     * 从后端获取听单设置
     *
     * @param driverUuid
     * @return
     */
    Observable<OrderListenerEntity> reqListenerSetting(String driverUuid);

    /**
     * 保存听单设置
     *
     * @param remindType
     * @param appointTimeStart
     * @param appointTimeEnd
     * @return
     */
    Observable<String> reqSaveListenerSetting(int remindType, String appointTimeStart, String appointTimeEnd);
}
